#!/bin/bash

# 一键安装并运行Web服务器探针应用 (x86版本)
# 使用方法: curl https://gitee.com/yisheng163/web-server-probe/raw/master/publishX86/1key.sh | bash

set -e

echo "========================================"
echo " Web Server Probe 一键安装脚本"
echo "========================================"

# 检查系统环境
check_system() {
    echo "检查系统环境..."
    
    # 检查操作系统
    if [[ "$OSTYPE" == "linux-gnu"* ]]; then
        OS="Linux"
    elif [[ "$OSTYPE" == "darwin"* ]]; then
        OS="macOS"
    else
        echo "警告: 未识别的操作系统类型: $OSTYPE"
        echo "脚本将继续执行，但可能遇到问题。"
    fi
    
    echo "操作系统: $OS"
}

# 检查依赖
check_dependencies() {
    echo "检查必需的依赖..."
    
    # 检查curl
    if ! command -v curl &> /dev/null; then
        echo "错误: 未找到curl，请先安装curl"
        exit 1
    fi
    
    # 检查unzip
    if ! command -v unzip &> /dev/null; then
        echo "错误: 未找到unzip，请先安装unzip"
        exit 1
    fi
    
    # 检查Docker
    if ! command -v docker &> /dev/null; then
        echo "错误: 未找到Docker，请先安装Docker"
        exit 1
    fi
    
    echo "所有依赖检查通过"
}

# 下载应用文件
download_files() {
    echo "下载应用文件..."
    
    # 创建临时目录
    TEMP_DIR=$(mktemp -d)
    cd "$TEMP_DIR"
    
    echo "下载Dockerfile..."
    curl -s -o Dockerfile https://gitee.com/yisheng163/web-server-probe/raw/master/publishX86/Dockerfile
    
    echo "下载应用发布文件..."
    # 为了简化一键安装过程，我们直接下载预先构建好的发布文件
    mkdir -p dist
    
    # 下载发布文件列表（根据项目实际情况调整）
    curl -s -o dist/WebProbe.dll https://gitee.com/yisheng163/web-server-probe/raw/master/publishX86/dist/WebProbe.dll
    curl -s -o dist/WebProbe.runtimeconfig.json https://gitee.com/yisheng163/web-server-probe/raw/master/publishX86/dist/WebProbe.runtimeconfig.json
    curl -s -o dist/WebProbe.deps.json https://gitee.com/yisheng163/web-server-probe/raw/master/publishX86/dist/WebProbe.deps.json
    
    echo "文件下载完成"
}

# 构建Docker镜像
build_image() {
    echo "构建Docker镜像..."
    
    # 构建镜像
    docker build -t web-probe-x86 .
    
    echo "Docker镜像构建完成"
}

# 运行容器
run_container() {
    echo "启动容器..."
    
    # 停止并删除已存在的容器
    docker stop web-probe-container 2>/dev/null || true
    docker rm web-probe-container 2>/dev/null || true
    
    # 运行新容器
    docker run -d -p 8089:8080 --name web-probe-container web-probe-x86
    
    echo "容器已启动"
    echo "应用访问地址: http://localhost:8089"
}

# 清理临时文件
cleanup() {
    echo "清理临时文件..."
    if [ -n "$TEMP_DIR" ] && [ -d "$TEMP_DIR" ]; then
        rm -rf "$TEMP_DIR"
    fi
}

# 主函数
main() {
    check_system
    check_dependencies
    
    # 设置清理函数，在脚本退出时执行
    trap cleanup EXIT
    
    # 执行安装步骤
    download_files
    build_image
    run_container
    
    echo ""
    echo "========================================"
    echo " Web Server Probe 安装成功!"
    echo " 请访问 http://localhost:8089 查看应用"
    echo "========================================"
}

# 执行主函数
main "$@"